package com.atguigu.config;

import com.atguigu.bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;

@Configuration
public class MainConfig2 {

    //默认是单实例

    /**
     *
     * @Scope: 用来调整作用域,参数如下
     * prototype: 多实例的: IOC容器启动并不会去调用方法创建对象放在容器中。
     *                      每次获取的时候才会调用方法创建对象。
     * singleton: 单实例的(默认值): IOC容器启动会调用方法创建对象放到IOC容器中
     *                          以后每次获取就是直接从容器(map.get())中拿。
     * request: 同一个请求创建一个实例
     * session: 同一个session创建一个实例
     *
     * 懒加载:
     *      单实例bean,默认在容器启动的时候创建对象
     *      懒加载: 容器启动不创建对象,第一次使用(获取)Bean创建对象,并初始化。
     * @return
     */
//    @Scope("prototype")
    @Lazy //懒加载
    @Bean("person")
    public Person person() {
        System.out.println("给容器添加Person......");
        return new Person("张三", 25);
    }

//    /**
//     * @Conditional: 按照一定的条件进行判断,满足条件给容器中注册bean
//     */
//    @Bean("bill")
//    public Person person01() {
//        return new Person("Bill Gates", 62);
//    }
//
//    @Bean("linux")
//    public Person person02() {
//        return new Person("linus", 48);
//    }

}
